home *** CD-ROM | disk | FTP | other *** search
- 1 CLS:KEY OFF
- 2 LOCATE 1,35:PRINT "MAZE":PRINT:PRINT
- 3 LPRINT TAB(35) "MAZE"
- 10 REM MAZE GENERATING PROGRAM
- 13 REM BY PAUL WENNBERG
- 100 DIM A(64,64),L2(500),D2(500)
- 110 INPUT "WHAT IS THE WIDTH OF THE MAZE? ";W:W=INT(W/2):PRINT:
- 120 INPUT "WHAT IS THE LENGTH OF THE MAZE? ";L:L=INT(L/2):PRINT
- 130 N=2*W+1:M=2*L+1
- 140 FOR I=2 TO N-1:FOR J=2 TO M-1:A(I,J)=0
- 145 NEXT J:NEXT I
- 150 FOR I=1 TO N:A(I,1)=1:A(I,M)=1:NEXT I
- 160 FOR I=1 TO M:A(1,I)=1:A(N,I)=1:NEXT I
- 170 NN=2*INT(RND(1)*(W-2))+3
- 180 MM=2*INT(RND(1)*(L-2))+3
- 190 A(NN,MM)=1:K=0
- 210 IF A(NN-2,MM)=0 THEN 320
- 220 IF A(NN+2,MM)=0 THEN 320
- 230 IF A(NN,MM-2)=0 THEN 320
- 240 IF A(NN,MM+2)=0 THEN 320
- 250 IF K-1=0 THEN 560
- 260 IF D2(K)=1 THEN NN=NN+L2(K)
- 270 IF D2(K)=2 THEN NN=NN-L2(K)
- 280 IF D2(K)=3 THEN MM=MM+L2(K)
- 290 IF D2(K)=4 THEN MM=MM-L2(K)
- 300 K=K-1
- 310 GOTO 210
- 320 L1=2*INT(RND(1)*3)+2
- 330 IF L1=8 THEN 320
- 340 D1=INT(RND(1)*4)+1
- 350 IF D1=5 THEN 340
- 360 IF D1>2 THEN 410
- 370 S=-1
- 380 IF D1=2 THEN S=1
- 390 T=0
- 400 GOTO 440
- 410 S=0
- 420 T=-1
- 430 IF D1=4 THEN T=1
- 440 FOR I=2 TO L1 STEP 2
- 450 IF A(NN+S*I,MM+T*I)=1 THEN 320
- 460 NEXT I
- 470 FOR I=1 TO L1
- 480 A(NN+S*I,MM+T*I)=1
- 490 NEXT I
- 500 NN=NN+S*L1
- 510 MM=MM+T*L1
- 520 K=K+1
- 530 L2(K)=L1
- 540 D2(K)=D1
- 550 GOTO 210
- 560 FOR I=1 TO M
- 570 FOR J=1 TO N
- 581 IF A(J,I)=1 THEN LPRINT "*";
- 591 IF A(J,I)=0 THEN LPRINT " ";
- 600 NEXT J:LPRINT:NEXT I:END
- I=1 TO M
- 570 FOR J=1 TO N
- 581 IF A(J,I)=1 THEN LPRINT "*";
- 591 IF A(J,I)=0 THEN LPRINT " ";
- 600 NEXT J:LPRINT:NEXT I:EN